官方描述:Apache Jena(或简称Jena)是一个用于构建语义Web和关联数据应用程序的自由和开源的Java框架。 该框架由不同的API组成,用于处理RDF数据。
Jena是一个用于Java语义Web应用程序的API(应用程序编程接口)。它不是一个程序或工具,如果这是你正在寻找,我建议或许TopBraid Composer作为一个好的选择。因此,Jena的主要用途是帮助您编写处理RDF和OWL文档和描述的Java代码。
SPARQL是用于访问由W3C RDF数据访问工作组设计的RDF的查询语言和协议。
作为一种查询语言,SPARQL是“数据导向的”,因为它只查询模型中保存的信息;在查询语言本身没有推理。当然,Jena模型是“聪明的”,因为它提供了某些三元组存在的印象,即按需创建它们,包括OWL推理。除了以查询的形式获取应用程序想要的描述外,SPARQL不执行任何操作,并以一组bindings或RDF图形的形式返回该信息。
官方网站:http://jena.apache.org/index.html
SPARQL教程:http://jena.apache.org/tutorials/sparql.html
设置环境变量
|
|
数据格式
首先,我们需要清楚查询要查询的数据。 SPARQL查询RDF图。 RDF图是一组三元组(Jena调用RDF图“模型”和三元组“语句”,因为这是他们在第一次设计Jena API时调用的)。
重要的是要意识到三元组的重要性,而不是序列化。序列化只是一种写三元组的方式。 RDF / XML是W3C的建议,但是可能很难看到序列化形式的三元组,因为有多种方法来编码同一个图。在本教程中,我们使用了一个更像“三元组”的序列化,称为Turtle(另请参阅W3C语义网络引文中描述的N3语言)。
我们将从vc-db-1.rdf中的简单数据开始:此文件包含用于多个vCard人员描述的RDF。 vCard在RFC2426中描述,并且RDF翻译在W3C笔记“在RDF / XML中表示vCard对象”中描述。我们的示例数据库只包含一些名称信息。
图形上,数据看起来像:
在三元组中,如下所示:
更加明确的:
重要的是要意识到这些是相同的RDF图,并且图中的三元组没有特定的顺序。计算机不在乎其顺序。
第一个SPARQL查询
看一个简单的查询并展示如何使用Jena执行它。
用命令行查询应用程序执行所述查询:
这通过将WHERE子句中的三元模式与RDF图中的三元组进行匹配来实现。三元组的谓词和对象是固定值,因此模式将只匹配与这些值的三元组。主体是一个变量,并且对变量没有其他限制。模式匹配任何三元组与这些谓词和对象值,它匹配x的结果。
<>中包含的项目是一个URI(实际上是一个IRI),而包含在“”中的项目是一个普通的字面量。就像Turtle,N3或N-triples一样,输入的文字用\ ^ \ ^编写,语言标签可以用@添加。
?x是一个称为x的变量。?不会形成名称的一部分,这就是为什么它不会出现在表的输出中。
该查询返回x查询变量中的匹配项。所示的输出是通过一条ARQ的命令获得的。
执行查询
|
|
在Linux中执行结果
获取所有人的FullName
|
|
|
|
指定前缀
|
|
|
|